home *** CD-ROM | disk | FTP | other *** search
/ HAKERIS 11 / HAKERIS 11.ISO / soft / development / Macromedia RoboHelp X5 / RoboHelpOffice.exe / Data1.cab / _2B75DC120DC34C88B358746111F44301 / scripts / frame_1 / DoAction.as < prev   
Encoding:
Text File  |  2003-11-24  |  10.3 KB  |  320 lines

  1. if(!§§pop())
  2. {
  3.    _root.Tree = new Object();
  4.    _root.Tree.nCount = 0;
  5.    var nIndent = 10;
  6.    var nSpace = 2;
  7.    var selectedNode = undefined;
  8.    var nDelay = 1;
  9.    var nCloseCount = 0;
  10.    var lastClicked = undefined;
  11.    var stateSetIn = 0;
  12.    var stateOnIn = 1;
  13.    var stateIn = 2;
  14.    var stateSetOut = 3;
  15.    var stateOnOut = 4;
  16.    var stateOut = 5;
  17.    var bookHeight = 0;
  18.    var pageHeight = 0;
  19.    var urlHeight = 0;
  20.    var typeBook = "typeBook";
  21.    var typePage = "typePage";
  22.    var typeURL = "typeURL";
  23.    TreeNode.prototype.OnClick = function(clickedData)
  24.    {
  25.       if(this.Owner != undefined)
  26.       {
  27.          if(this.Owner != selectedNode)
  28.          {
  29.             selectedNode.object.Unselect();
  30.             this.Owner.object.Select();
  31.             selectedNode = this.Owner;
  32.          }
  33.       }
  34.       if(selectedNode.type_str == typeBook)
  35.       {
  36.          selectedNode.bStarted = true;
  37.          selectedNode.bWait = false;
  38.          selectedNode.nDelayCount = 0;
  39.          if(!selectedNode.bExpanded || selectedNode.bContractingNow)
  40.          {
  41.             selectedNode.object.OpenBook();
  42.             selectedNode.bOpen = true;
  43.             selectedNode.bExpanded = true;
  44.             selectedNode.bContractingNow = false;
  45.             GetPositions();
  46.             UpdateNodePositions();
  47.             selectedNode.pfnClicked(selectedNode.clickedData);
  48.             selectedNode.nCurNode = 0;
  49.             lastClicked = selectedNode;
  50.             if(!selectedNode.bChunked)
  51.             {
  52.                selectedNode.timerClip_mc.onEnterFrame = selectedNode.ExpandNode;
  53.             }
  54.          }
  55.          else
  56.          {
  57.             selectedNode.object.CloseBook();
  58.             selectedNode.bContractingNow = true;
  59.             selectedNode.pfnClicked(selectedNode.clickedData);
  60.             selectedNode.nCurNode = selectedNode.nNodeCount - 1;
  61.             selectedNode.timerClip_mc.onEnterFrame = selectedNode.ContractNode;
  62.          }
  63.       }
  64.       else
  65.       {
  66.          selectedNode.pfnClicked(selectedNode.clickedData);
  67.       }
  68.    };
  69.    TreeNode.prototype.MakeInvisible = function()
  70.    {
  71.       fhtooltip_comp.RemoveTooltip(this.object.textNode_mc.userTextField_mc);
  72.       this.object.MakeInvisible();
  73.       this.object.Destroy();
  74.       delete this.object;
  75.       this.object = undefined;
  76.       if(this.bExpanded)
  77.       {
  78.          this.bOpen = false;
  79.       }
  80.       this.bCreated = false;
  81.    };
  82.    TreeNode.prototype.MakeVisible = function()
  83.    {
  84.       if(this.type_str == typeBook)
  85.       {
  86.          this.object = tocArt_mc.CreateNewBook(this.OnClick,clickedData);
  87.          this.object.bIsBookOpen = this.bExpanded;
  88.       }
  89.       else if(this.type_str == typePage)
  90.       {
  91.          this.object = tocArt_mc.CreateNewPage(this.OnClick,clickedData);
  92.       }
  93.       else if(this.type_str == typeURL)
  94.       {
  95.          this.object = tocArt_mc.CreateNewUrl(this.OnClick,clickedData);
  96.       }
  97.       this.object.Owner = this;
  98.       this.object.SetText(this.title);
  99.       this.object.MakeVisible();
  100.       fhtooltip_comp.AddTooltip(this.object.textNode_mc.userTextField_mc,this.title);
  101.       this.bCreated = true;
  102.    };
  103.    TreeNode.prototype.AddNewNode = function(newNode)
  104.    {
  105.       this.treeNode_array[this.nNodeCount] = newNode;
  106.       newNode.NodeParent = this;
  107.       newNode.nLevel = this.nLevel + 1;
  108.       newNode.xPos = this.xPos + nIndent;
  109.       newNode.nNodeIndex = this.nNodeCount;
  110.       newNode.MakeInvisible();
  111.       this.nNodeCount = this.nNodeCount + 1;
  112.    };
  113.    TreeNode.prototype.ExpandNode = function()
  114.    {
  115.       if(!this.Owner.bWait)
  116.       {
  117.          if(this.Owner.treeNode_array[this.Owner.nCurNode].posObj.relPos + curRootPosition > Stage.height - tocYPosition)
  118.          {
  119.             var startedNode = this.Owner.NodeStartedExpand();
  120.             debug_trace("Started Node = " + startedNode.title);
  121.             if(lastClicked == startedNode)
  122.             {
  123.                if(startedNode.posObj.relPos - this.Owner.treeNode_array[this.Owner.nCurNode].objHeight + curRootPosition > 0)
  124.                {
  125.                   bDisableScroll = true;
  126.                   _global.NavHost.SetScrollPosition(- curRootPosition,"Contents");
  127.                   bDisableScroll = false;
  128.                   curRootPosition -= this.Owner.treeNode_array[this.Owner.nCurNode].objHeight;
  129.                }
  130.                else if(curRootPosition != - startedNode.posObj.relPos)
  131.                {
  132.                   curRootPosition = - startedNode.posObj.relPos;
  133.                }
  134.                else
  135.                {
  136.                   this.Owner.nCurNode = this.Owner.OpenOffScreen(this.Owner.nCurNode);
  137.                }
  138.             }
  139.             else
  140.             {
  141.                this.Owner.nCurNode = this.Owner.OpenOffScreen(this.Owner.nCurNode);
  142.             }
  143.          }
  144.          if(this.Owner.nCurNode < this.Owner.nNodeCount)
  145.          {
  146.             var curNode = this.Owner.treeNode_array[this.Owner.nCurNode];
  147.             if(curNode.bExpanded)
  148.             {
  149.                curNode.bWait = false;
  150.                curNode.nDelayCount = 0;
  151.                curNode.nCurNode = 0;
  152.                curNode.timerClip_mc.onEnterFrame = this.Owner.ExpandNode;
  153.                this.Owner.bWait = true;
  154.             }
  155.             if(curNode.bCreated && curNode.nState == stateOut)
  156.             {
  157.                curNode.bCreated = false;
  158.             }
  159.             curNode.nState = stateSetIn;
  160.             UpdateDisplay(topVisibleIndex,curRootPosition);
  161.             this.Owner.nCurNode = this.Owner.nCurNode + 1;
  162.          }
  163.          else
  164.          {
  165.             this.onEnterFrame = undefined;
  166.             this.Owner.NodeParent.bWait = false;
  167.             if(this.Owner.bStarted)
  168.             {
  169.                bDisableScroll = true;
  170.                SetScrollBarRange();
  171.                _global.NavHost.SetScrollPosition(- curRootPosition,"Contents");
  172.                bDisableScroll = false;
  173.                this.Owner.bStarted = false;
  174.             }
  175.          }
  176.       }
  177.    };
  178.    TreeNode.prototype.OpenOffScreen = function(nNodeIndex)
  179.    {
  180.       while(this.treeNode_array[nNodeIndex].posObj.relPos + curRootPosition > Stage.height - tocYPosition && nNodeIndex < this.nNodeCount)
  181.       {
  182.          var curNode = this.treeNode_array[nNodeIndex];
  183.          if(curNode.nState > stateIn)
  184.          {
  185.             curNode.nState = stateIn;
  186.          }
  187.          if(curNode.bExpanded)
  188.          {
  189.             curNode.OpenOffScreen(0);
  190.          }
  191.          nNodeIndex++;
  192.       }
  193.       return nNodeIndex;
  194.    };
  195.    TreeNode.prototype.OpenNoTransition = function(nNodeIndex)
  196.    {
  197.       while(nNodeIndex < this.nNodeCount)
  198.       {
  199.          var curNode = this.treeNode_array[nNodeIndex];
  200.          if(curNode.nState > stateIn)
  201.          {
  202.             curNode.nState = stateIn;
  203.          }
  204.          if(curNode.bExpanded)
  205.          {
  206.             curNode.OpenOffScreen(0);
  207.          }
  208.          nNodeIndex++;
  209.       }
  210.       return nNodeIndex;
  211.    };
  212.    TreeNode.prototype.ContractNode = function()
  213.    {
  214.       if(!this.Owner.bWait)
  215.       {
  216.          if(this.Owner.treeNode_array[this.Owner.nCurNode].posObj.relPos + curRootPosition > Stage.height - tocYPosition)
  217.          {
  218.             this.Owner.nCurNode = this.Owner.CloseOffScreen(this.Owner.nCurNode);
  219.          }
  220.          if(this.Owner.nCurNode >= 0)
  221.          {
  222.             var curNode = this.Owner.treeNode_array[this.Owner.nCurNode];
  223.             if(curNode.bExpanded)
  224.             {
  225.                curNode.bWait = false;
  226.                curNode.nDelayCount = 0;
  227.                curNode.nCurNode = curNode.nNodeCount - 1;
  228.                curNode.timerClip_mc.onEnterFrame = this.Owner.ContractNode;
  229.                this.Owner.bWait = true;
  230.             }
  231.             else
  232.             {
  233.                curNode.nState = stateSetOut;
  234.             }
  235.             UpdateDisplay(topVisibleIndex,curRootPosition);
  236.             this.Owner.nCurNode--;
  237.          }
  238.          else if(this.Owner.bStarted && this.Owner.ParentStartedContract())
  239.          {
  240.             this.Owner.bStarted = false;
  241.             this.Owner.bExpanded = false;
  242.             this.Owner.bContractingNow = false;
  243.             this.Owner.nState = stateSetOut;
  244.             if(this.Owner.NodeParent.nCurNode + 1 == this.Owner.nNodeIndex)
  245.             {
  246.                this.Owner.NodeParent.bWait = false;
  247.             }
  248.          }
  249.          else if(this.Owner.bStarted)
  250.          {
  251.             this.Owner.bStarted = false;
  252.             this.Owner.bExpanded = false;
  253.             this.Owner.bContractingNow = false;
  254.             this.onEnterFrame = this.Owner.CloseFinished;
  255.          }
  256.          else
  257.          {
  258.             this.onEnterFrame = undefined;
  259.             this.Owner.nState = stateSetOut;
  260.             this.Owner.NodeParent.bWait = false;
  261.          }
  262.       }
  263.    };
  264.    TreeNode.prototype.NodeStartedExpand = function()
  265.    {
  266.       var curNode = this;
  267.       while(!curNode.bStarted)
  268.       {
  269.          curNode = curNode.NodeParent;
  270.       }
  271.       return curNode;
  272.    };
  273.    TreeNode.prototype.ParentStartedContract = function()
  274.    {
  275.       var bResult = false;
  276.       var curNode = this.NodeParent;
  277.       while(!curNode.bStarted && !curNode.bContractingNow && curNode != undefined)
  278.       {
  279.          curNode = curNode.NodeParent;
  280.       }
  281.       if(curNode != undefined)
  282.       {
  283.          bResult = true;
  284.       }
  285.       return bResult;
  286.    };
  287.    TreeNode.prototype.CloseFinished = function()
  288.    {
  289.       if(this.Owner.treeNode_array[0].nState == stateOnOut || this.Owner.treeNode_array[0].nState == stateSetOut)
  290.       {
  291.          UpdateDisplay(topVisibleIndex,curRootPosition);
  292.       }
  293.       else if(this.Owner.treeNode_array[0].nState == stateOut)
  294.       {
  295.          this.onEnterFrame = undefined;
  296.          GetPositions();
  297.          SetScrollBarRange();
  298.          UpdateDisplay(topVisibleIndex,curRootPosition);
  299.       }
  300.       else
  301.       {
  302.          this.onEnterFrame = undefined;
  303.       }
  304.    };
  305.    TreeNode.prototype.CloseOffScreen = function(nNodeIndex)
  306.    {
  307.       while(this.treeNode_array[nNodeIndex].posObj.relPos + curRootPosition > Stage.height - tocYPosition && nNodeIndex >= 0)
  308.       {
  309.          var curNode = this.treeNode_array[nNodeIndex];
  310.          curNode.nState = stateOut;
  311.          if(curNode.bExpanded)
  312.          {
  313.             curNode.CloseOffScreen(curNode.nNodeCount - 1);
  314.          }
  315.          nNodeIndex--;
  316.       }
  317.       return nNodeIndex;
  318.    };
  319. }
  320.